#include<iostream>//堆排序
#include<cstdio>
#include<cstring>
using namespace std;
int a[100];
int d[100];//堆
void insert_node(int x,int m)
{
    if(m==1)
    {
        d[m]=x;return ;
    }
    d[m]=x;
    int j=m,fa=j/2;
    while(fa>0)
    {
        bool flag=false;
        fa=j/2;
        if(d[fa]>d[j])
        {
            int t=d[fa];
            d[fa]=d[j];
            d[j]=t;
            flag=true;
        }
        j=fa;
        if(!flag)break;
    }
}
void delete_node(int i,int m)
{
    d[i]=d[m];
    int j=i;
    while(j<m)
    {
        int le=j*2,re=j*2+1;
        if(le<m&&re<m)
        {
            if(d[j]>d[le]&&d[j]>d[re])
            {
                if(d[le]<d[re])
                {
                    int t=d[le];
                    d[le]=d[j];
                    d[j]=t;
                    j=le;
                }
                else 
                {
                    int t=d[re];
                    d[re]=d[j];
                    d[j]=t;
                    j=re;
                }
            }
            else if(d[j]>d[le]&&d[j]<d[re])
            {
                int t=d[le];
                d[le]=d[j];
                d[j]=t;
                j=le;
            }
            else if(d[j]>d[re]&&d[j]<d[le])
            {
                int t=d[re];
                d[re]=d[j];
                d[j]=t;
                j=re;
            }
            else break;
        }
        else if(le<m&&re>=m)
        {
            if(d[j]>d[le])
            {
                int t=d[le];
                d[le]=d[j];
                d[j]=t;
                j=le;
            }
            else break;
        }
        else if(le>=m&&re<m)
        {
            if(d[j]>d[re])
            {
                int t=d[re];
                d[re]=d[j];
                d[j]=t;
                j=re;
            }
        }
        else break;
    }
}
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=n;i++)
    {
        insert_node(a[i],i);
    }
    for(int i=1;i<=n;i++)
    {
        cout<<d[1]<<' ';
        delete_node(1,n-i+1);
    }
    return 0;
}